/**
 * @(#) ISimulatorActions.java
 */

package pcsr.simulator.control;

import java.util.Collection;

import pcsr.drivers.simulatorDriver.SimulatorActuator;
import pcsr.drivers.simulatorDriver.SimulatorSensor;

/**
 * Defines the contract that allow the control of the simulator.
 * @author Paulo Fagundes
 *
 */
public interface ISimulatorActions
{
	/**
	 * Gets all actuators managed in the simulator.
	 * @return All actuators.
	 */
	Collection<SimulatorActuator> GetAllActuators();
	
	/**
	 * Gets all sensors managed in the simulator.
	 * @return All sensors.
	 */
	Collection<SimulatorSensor> GetAllSensors();
	
	/**
	 * Change the operating mode of an actuator.
	 * @param actuatorID The actuator identifier.
	 * @param actuatorMode The new operating mode.
	 */
	void SetSimulatorActuatorMode(String actuatorID, String actuatorMode);
	
	/**
	 * Change the value of an actuator.
	 * @param actuatorID The actuator identifier.
	 * @param actuatorValue The new value.
	 */
	void SetSimulatorActuatorValue(String actuatorID, double actuatorValue);
	
	/**
	 * Change the operating mode of a sensor.
	 * @param sensorID The sensor identifier.
	 * @param sensorMode The new operating mode.
	 */
	void SetSimulatorSensorMode(String sensorID, String sensorMode);
	
	/**
	 * Change the value of a sensor.
	 * @param sensorID The sensor identifier.
	 * @param sensorValue The new value.
	 */
	void SetSimulatorSensorValue(String sensorID, double sensorValue);
	
	/**
	 * Starts the simulator.
	 */
	void Start();
	
}
